package com.kk.demo.mesi.impl;

import com.kk.demo.mesi.MesiStateContext;
import com.kk.demo.mesi.MesiStateServiceInf;

/**
 * 
 * 无效状态
* 源文件名：ExclusiveStateImpl.java
* 文件版本：1.0.0
* 创建作者：liujun
* 创建日期：2016年9月21日
* 修改作者：liujun
* 修改日期：2016年9月21日
* 文件描述：liujun
* 版权所有：Copyright 2016 zjhz, Inc. All Rights Reserved.
*/
public class InvalidStateImpl implements MesiStateServiceInf {

    /**
     * 远程操作信息
    * @字段说明 oper
    */
    private MesiStateContext mesiContext;

    public InvalidStateImpl(MesiStateContext mesiContext) {
        this.mesiContext = mesiContext;
    }

    @Override
    public Object loadRead(String key) {
        // 1, 如果其它Cache没有这份数据，本Cache从内存中取数据，Cache line状态变成E；
        // 2, 如果其它Cache有这份数据，且状态为M，则将数据更新到内存，本Cache再从内存中取数据，2个Cache 的Cache
        // line状态都变成S；
        // 3,如果其它Cache有这份数据，且状态为S或者E，本Cache从内存中取数据，这些Cache 的Cache line状态都变成S

        return this.mesiContext.loadRead(key);
    }

    @Override
    public void localWrite(String key, Object value) {
        // 从内存中取数据，在Cache中修改，状态变成M；

        // 如果其它Cache有这份数据，且状态为M，则要先将数据更新到内存；

        // 如果其它Cache有这份数据，则其它Cache的Cache line状态变成I
    }

}
